package gob.cgr.web.sgrh.component;

import gob.cgr.sgrh.ejb.entidad.Ambito;
import gob.cgr.web.sgrh.service.SigerhService;
import gob.cgr.web.sgrh.util.Utilitario;


import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;

import javax.faces.model.SelectItem;
import javax.inject.Inject;


public class Ubigeo  {
	@Inject
	private SigerhService service;
	private String codDepto;
	private String codProv;
	private String codDist;
	private ArrayList<SelectItem> distritos=new ArrayList<SelectItem>();
	private ArrayList<SelectItem> provincias=new ArrayList<SelectItem>();
	private ArrayList<SelectItem> departamentos=new ArrayList<SelectItem>();
	
	private String codAmbito;
	private Ambito ambitoSelected;
	
	public Ubigeo() {
		// TODO Auto-generated constructor stub
			
		
	}
	@PostConstruct
	public void init(){
		if(departamentos.size()<1){
			List<Ambito> dptos=service.getDepartamentos();
		//	System.out.println("obtenidos "+dptos.size());
			for(Ambito a:dptos){
				SelectItem item=new SelectItem(a.getIdAmbito(),a.getAmbDescripcion());
			departamentos.add(item);
			
			}
		}
		
	}
	
	
	
	public ArrayList<SelectItem> getDistritos() {
		//System.out.println("obteniendo distritos ..de "+codProv);
		if(codProv!=null && codProv.length()>0){
			distritos.clear();
			List<Ambito> dist=service.getAmbitosByPdr(Integer.parseInt(codProv));
		//	System.out.println("obtenidos "+dist.size() +" distritos ");
			for(Ambito a:dist){
				SelectItem item=new SelectItem(a.getIdAmbito(),a.getAmbDescripcion());
			distritos.add(item);
			}
			}	
		
		
		return distritos;
	}

	public void setDistritos(ArrayList<SelectItem> distritos) {
		this.distritos = distritos;
	}

	public ArrayList<SelectItem> getProvincias() {
		//System.out.println("codDpeto es "+codDepto);
		distritos=new ArrayList<SelectItem>();
		//System.out.println("limpiado distritios "+distritos+" cod prov es "+codProv);
		
		if(codDepto!=null && codDepto.length()>0){
			provincias.clear();
			List<Ambito> prov=service.getAmbitosByPdr(Integer.parseInt(codDepto));
		//	System.out.println("provincias obtenidos "+prov.size());
			String codProvTemp=null;
			for(Ambito a:prov){
				SelectItem item=new SelectItem(a.getIdAmbito(),a.getAmbDescripcion());
				provincias.add(item);
				if(codProv!=null && codProv.equals(a.getIdAmbito()+"")){
					codProvTemp=codProv;
				}
			}
			if(provincias.size()>0 && codProvTemp==null)
			codProv=provincias.get(0).getValue().toString();
			}	
		//System.out.println("devolviendo :"+provincias);	
		return provincias;
	}

	public void setProvincias(ArrayList<SelectItem> provincias) {
		this.provincias = provincias;
	}

	
	public String getCodDepto() {
		return codDepto;
	}
	public void setCodDepto(String codDepto) {
		this.codDepto = codDepto;
	}
	public String getCodProv() {
		return codProv;
	}
	public void setCodProv(String codProv) {
		this.codProv = codProv;
	}
	public String getCodDist() {
		return codDist;
	}
	public void setCodDist(String codDist) {
		this.codDist = codDist;
	}
	public ArrayList<SelectItem> getDepartamentos() {
		return departamentos;
	}
	public void setDepartamentos(ArrayList<SelectItem> departamentos) {
		this.departamentos = departamentos;
	}
	
   
	public String getCodAmbito() {
		codAmbito=!Utilitario.isNullOrEmpty(codDist)?codDist:!Utilitario.isNullOrEmpty(codProv)?codProv:!Utilitario.isNullOrEmpty(codDepto)?codDepto:"26";
		return codAmbito;
	}
	public void setCodAmbito(String codAmbito) {
		this.codAmbito = codAmbito;
	}
	public Ambito getAmbitoSelected() {
		getCodAmbito();
		System.out.println("ambito es "+getCodAmbito());
		ambitoSelected=service.getAmbito(Integer.parseInt(getCodAmbito()));
		return ambitoSelected;
	}
	public void setAmbitoSelected(Ambito ambitoSelected) {
		this.ambitoSelected = ambitoSelected;
	}  
	
	public void setearUbigeo(Ambito lugar){
		if(lugar!=null){
			Character c=lugar.getAmbTipo();
			System.out.println("tipo ambito "+c);
			if(c.equals('1')){
				codDepto=lugar.getIdAmbito()+"";
				System.out.println("seteado el codDepto a "+codDepto);
			}
			else if(c.equals('2')){
				codDepto=lugar.getAmbPadre().getIdAmbito()+"";
				getProvincias();
				codProv=lugar.getIdAmbito()+"";
				System.out.println("seteado el codDepto a "+codDepto +" y la porvincia a "+codProv);
				
			}
			else if(c.equals('3')){
				Ambito prov=service.getAmbito(lugar.getAmbPadre().getIdAmbito());
				codProv=prov.getIdAmbito()+"";
				codDepto=prov.getAmbPadre().getIdAmbito()+"";
				//getProvincias();
				codDist=lugar.getIdAmbito()+"";
				System.out.println("seteado el codDepto a "+codDepto +" y la porvincia a "+codProv +" dustrito a "+codDist);
				
				
			}
			
			
		}
			
		
	}
	
}
